package com.wimcorp.magic.userinterface;

import java.rmi.Remote;
import java.rmi.RemoteException;
import java.util.List;
import java.util.Map;
import java.util.Set;

import com.wimcorp.magic.input.Location;
import com.wimcorp.magic.input.Target;
import com.wimcorp.magic.input.Type;
import com.wimcorp.magic.players.Player;

public interface UserInterface extends Remote {

	long castAbility() throws RemoteException;

	 Long[] declareAttackers() throws RemoteException;

	//List<Player> declareTargets() throws RemoteException;

	//void payAttackCost() throws RemoteException;

	 Map<Long,Long[]> declareBlockers(Set<Long> attackerIds) throws RemoteException;

	//void payBlockCost() throws RemoteException;

	void discardExtraCard() throws RemoteException;

	void selectDeck() throws RemoteException;

	void confirmReady() throws RemoteException;

	void message(String message) throws RemoteException;

	boolean selectBoolean(String message) throws RemoteException;

	Long[] order(String message, long[] input) throws RemoteException;

	long select(Target target, Set<String> types, Set<String> locations, Set<String> behaviors)  throws RemoteException;

	long select(Target target, Type type, Location location) throws RemoteException;
	
	int selectColor(List<String> colorOptions) throws RemoteException;

	void conjureMana(String message) throws RemoteException;;



}
